home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / ciarnv85.arc / HOST.4TH < prev    next >
Text File  |  1986-04-08  |  4KB  |  91 lines

  1.               ( XECOM MODEM DEMO AND TERMINAL EMULATOR 1.00 )
  2.  
  3.                   ( The name of this file is HOST.4TH. )
  4.  
  5. ( The main loop of the Host computer terminal emulation is called HOST. )
  6. ( It is in the last segment of this program: H2.4TH.                   )
  7.  
  8. HEX
  9. C" XE1" XE1      ( name of device. see device driver source listing )
  10. : XO XE1 2 FOPEN FHNDL ! ; ( opens XE1 for read and write )
  11. VARIABLE BUFF2 40 ALLOT  ( buffer to hold bytes returned by function calls )
  12.  
  13. ( The following 4 routines are the basic data, control/status read/write )
  14. ( functions. DA@ returns one data byte on the stack. DA! takes one byte  )
  15. ( from the stack and stores it in the data port. CT@ returns the status  )
  16. ( byte on the stack. CT! takes one byte from the stack and stores it in  )
  17. ( the control port. These routines are coded in assembler according to   )
  18. ( FORTH assembler conventions and use DOS function calls.         )
  19.  
  20. ( Note that you may simply poll the status register until the receiver   )
  21. ( ready bit is on and then fetch a byte from location 2f8, data port, as )
  22. ( an alternate method. Or similarly poll the status register, 2f9, until )
  23. ( transmitter ready bit is on, and then store a data byte at 2f8.        )
  24. ( This method is used in the voice routine called SAY. See VDICT0.4TH.   )
  25.  
  26. CODE DA@ DX, DX XOR DX PUSH DX, SP MOV CX, # 0001 MOV
  27.       BX, FHNDL MOV AX, # 3F00 MOV INT21  
  28.       NEXT JMP END-CODE 
  29. CODE CT@ DX, DX XOR DX PUSH DX, SP MOV CX, # 0001 MOV
  30.       BX, FHNDL MOV AX, # 4402 MOV INT21 AX, BUFF2 MOV
  31.       NEXT JMP END-CODE
  32. CODE CT! DX, SP MOV CX, # 0001 MOV 
  33.       BX, FHNDL MOV AX, # 4403 MOV INT21 
  34.       DX POP NEXT JMP END-CODE
  35. CODE DA! DX, SP MOV CX, # 0001 MOV 
  36.       BX, FHNDL MOV AX, # 4000 MOV INT21
  37.       DX POP NEXT JMP END-CODE 
  38.  
  39.  
  40. ( The following routines are for line analysis calculations. )
  41. DECIMAL 
  42. CREATE K 2 ALLOT 
  43. CREATE LEV 2 ALLOT 
  44. CREATE TBASE 2 ALLOT   ( VARIABLE TO HOLD NUMBER BASE e.g. HEX )
  45. : D.0 BASE @ TBASE ! DECIMAL 10 >R   ( outputs a double number with 3 ...)
  46.    SWAP OVER DABS <# #S ROT SIGN #>  (  decimal places.                  )
  47.    R> OVER - SPACES TYPE TBASE @ BASE ! ;
  48. : D.1 BASE @ TBASE ! DECIMAL 10 >R  ( outputs a double number w/1 decimal )
  49.    SWAP OVER DABS <# # 46 HOLD #S ROT SIGN #> 
  50.    R> OVER - SPACES TYPE TBASE @ BASE ! ;
  51. : CU.000 ( D -- D ( CUBES A NUMBER THAT IS TIMES 1000 )
  52.   DDUP DDUP DROP 1000 M*/ DSWAP DROP 1000 M*/ ;
  53. : 20LOG10N 0 K !  ( CALCULATES 20 LOG10 OF A DOUBLE )
  54.     ( PRECISION NUMBER * 1000 AND RETURNS THE SAME )
  55.    BEGIN DDUP 2.000 D> WHILE 6 K +! 2 M/MOD 
  56.      ROT DROP REPEAT 
  57.    DDUP CU.000 1.000 D- DSWAP 1.000 D+ 
  58.    CU.000 
  59.    DROP 1000 SWAP M*/ 
  60.    23 1 M*/ K @ 1000 M* D+ ; ( D.000 )
  61. : S/N_DB ( SIGNAL TO NOISE IN DB ) ."                SIGNAL/NOISE RATIO IS    "   LEV @ 3 < IF ."       > 45  dB "
  62.    ELSE LEV @ 255 = IF ."        < 4  dB "
  63.                     ELSE 420.800 LEV @ M/MOD ROT DROP 
  64.                      20LOG10N .500 D+ 1 1000 M*/ D.0 
  65.                      ."   dB " THEN THEN ;
  66. HEX
  67. : SIGNEX DUP 7F > IF FF00 OR THEN ;
  68. DECIMAL
  69. CREATE DEV 2 ALLOT
  70. : FREQ_DEV ."           CARRIER FREQUENCY ERROR IS    " 
  71.       7372800. 1000 3314 DEV @ SIGNEX
  72.     - M*/ 2225.000 D- .50 D+ 1 100 M*/ D.1 ."   Hz " ;
  73. CREATE NN 2 ALLOT
  74. : SLCALC NN @ DUP M* 1000 19391 M*/ NN @ 1000 M* 20LOG10N ( calculates ...)
  75.     D- 4.100 D- .500 D+ 1 1000 M*/ D.0 ;                  ( signal level. )
  76. : SIG_LEV ."            RECEIVED CARRIER LEVEL IS    "
  77.     NN @ 3 < IF ."      > -10 dBm "
  78.              ELSE NN @ 255 = IF ."      < -40 dBm "
  79.                              ELSE SLCALC ."  dBm " 
  80.                              THEN
  81.              THEN ;
  82. HEX 
  83. ( End of line analysis calculations. )
  84.  
  85. ==> B:H1.4TH
  86.  
  87.  
  88.  
  89.  
  90.  
  91.